// 导入数据处理
// 转换数组中的每一项的对象的 key 值的方法
export function getImportData(results, headerRelation) {
  // results：表体数据
  // [
  //   {
  //     '入职日期': "2018-11-02T08:00:00.000+0000"
  //     '姓名': "管理员"
  //     '工号': "9002"
  //     '手机号': 13811111111
  //     '聘用形式': 1
  //     '部门': "行政部1"
  //   },
  //   ...
  // ]
  // headerRelation：字段的中英对照关系
  // {
  //   '姓名': 'username',
  //   '手机号': 'mobile',
  //   '入职日期': 'timeOfEntry',
  //   '工号': 'workNumber',
  //   '聘用形式': 'formOfEmployment',
  //   '部门': 'departmentName'
  // }
  const arr = []
  // 将所有的中文 key 转换成英文 key，然后添加到新数组中
  results.forEach(item => {
    const obj = {}
    Object.keys(item).forEach(key => {
      obj[headerRelation[key]] = item[key]
    })
    arr.push(obj)
  })
  return arr
}

// 枚举处理函数 根据1/2返回正式或者非正式
function transEmployment(value) {
  const TYPES = {
    1: '正式',
    2: '非正式'
  }
  return TYPES[value]
}

// 导出数据处理
export function getExportData(rows, headerArr, headerRelation) {
  // rows 决定有多少行，也就是二维数组中有多少个小数组
  // headerArr 决定有多少列，每个小数组中有多少项
  // 1、定义一个结果数组
  // 2、将结果数组返回
  // 3、写逻辑部分
  // 定义一个子数组
  // 遍历原始数据拿到每一个对象
  // 遍历表头拿到每一个中文的表头
  // 定义一个英文的key，通过headerRelation【中文的表头】进行赋值
  // 通过定义item[英文的key]去除对应value，并push到子数组
  // 将子数组push到结果数组中

  const twoArr = []
  rows.forEach(item => {
    const arr = []
    // headerArr = ['姓名', '手机号', '入职日期', '工号', '聘用形式', '部门']
    headerArr.forEach(key => {
      // key 是中文
      // enKey 是英文
      // 根据字段的中英对照关系，拿到英文 key
      const enKey = headerRelation[key]
      // 如果是聘用形式字段，需要将数字转换为文字
      if (enKey === 'formOfEmployment') {
        const formatValue = transEmployment(item[enKey])
        arr.push(formatValue)
      } else {
        // 将一行中的每个字段的值加入到第二维数组中
        arr.push(item[enKey])
      }
    })
    twoArr.push(arr)
  })
  return twoArr
}
